home *** CD-ROM | disk | FTP | other *** search
- %----------------------------------------------------------------------
- %----Linda muProlog Process Library
- %----
- %----Written by Geoff Sutcliffe, 29/11/89
- %----------------------------------------------------------------------
- %----Declare . as a prefix operator to allow atomic writes
- ?-op(100,xf,.).
- %----------------------------------------------------------------------
- %----eval sends a request
- eval(Goal,File):-
- send_request(server_eval(Goal,File)).
- %----------------------------------------------------------------------
- %----out sends a request
- out(Tuple):-
- send_request(server_out(Tuple)).
- %----------------------------------------------------------------------
- %----in sends a request with a reply channel, and reads the reply
- in(Tuple):-
- write_reply_channel(Write_reply_channel),
- send_request(server_in(Tuple,Write_reply_channel)),
- receive_answer(Tuple).
- %----------------------------------------------------------------------
- %----inp sends a request with a reply channel, and reads the reply. The
- %----reply may be fail
- inp(Tuple):-
- write_reply_channel(Write_reply_channel),
- send_request(server_inp(Tuple,Write_reply_channel)),
- receive_answer(Tuple).
- %----------------------------------------------------------------------
- %----rd sends a request with a reply channel, and reads the reply
- rd(Tuple):-
- write_reply_channel(Write_reply_channel),
- send_request(server_rd(Tuple,Write_reply_channel)),
- receive_answer(Tuple).
- %----------------------------------------------------------------------
- %----rdp sends a request with a reply channel, and reads the reply. The
- %----reply may be fail
- rdp(Tuple):-
- write_reply_channel(Write_reply_channel),
- send_request(server_rdp(Tuple,Write_reply_channel)),
- receive_answer(Tuple).
- %----------------------------------------------------------------------
- %----Send a request by writing down the request channel
- send_request(Request):-
- write_request_channel(Write_request_channel),
- write_term(Write_request_channel,Request).
- %----------------------------------------------------------------------
- %----Receive an answer by reading the reply channel. As only variables
- %----can be read, use a new variable and unify afterwards
- receive_answer(Answer):-
- read_reply_channel(Read_reply_channel),
- read(Read_reply_channel,Term_read),
- Answer = Term_read.
- %----------------------------------------------------------------------
- %----Write a term with a . - horrible hack to make writes atomic
- write_term(Channel,Term):-
- Structure =.. ['.',Term],
- writeln(Channel,Structure).
- %----------------------------------------------------------------------
-